package papacharly.encheres.dao;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import papacharly.encheres.model.Produit;
import papacharly.encheres.model.User;

public class ProduitService extends GenericService<User> {

    private static ProduitService instance = null;

    /**
     * Retourne l'instance du service
     * @return l'instance du service
     */
    public synchronized static ProduitService getInstance() {
        if (instance == null) {
            instance = new ProduitService();
        }
        return instance;
    }



    /**
     * Enchère en cours :
     *  -
     * @return
     */
    public List<Produit> getEnchereEnCour(){
        log.info("getEnchereEnCour");

        List<Produit> enchereList = new ArrayList<Produit>();

        Session session = ConnectionFactory.getSession();

        try {
            enchereList = session.createQuery("select t "
                    + "FROM Produit p "
                    + "JOIN p.encheres as e"
                    + "WHERE p.dateDebut < :dateDebut "
                    + "AND p.dateFin < :dateFin ").list();
        } catch (Exception e) {
            log.warn("getEnchereEnCour - KO", e);
        } finally {
            if (session != null) {
                try {
                    // session.close();
                } catch (HibernateException e) {
                    log.error("Hibernate Exception ", e);
                    throw new RuntimeException(e);
                }
            }
        }

        return enchereList;
    }
}
